package org.nobody.common.valid;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/**
 * @author 3489309323@qq.com
 * @create 2020-07-31-22:33
 */
public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
  private Set<Integer> set = new HashSet<>();

  /**
   * 初始化方法
   * @param constraintAnnotation
   *    存放着@ListValue这个注解使用时传递的所有信息
   *    比如@ListValue(vals={0,1},message = ""),就存放着vals和message两个信息
   */
  @Override
  public void initialize(ListValue constraintAnnotation) {
    int[] vals = constraintAnnotation.vals(); //
    for (int val : vals) {
      set.add(val);
    }
  }

  /**
   * 判断是否校验成功
   * @param value 需要校验的值,比如下面↓
   *   @ListValue(vals={0,1},message = "")
   * 	 private Integer showStatus;
   * 	 ↑这里value即为showStatus的值
   *
   * @param context
   * @return
   */
  @Override
  public boolean isValid(Integer value, ConstraintValidatorContext context) {
    return set.contains(value);
  }
}
